package com.yubest;

/**
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 *
 * 如果不存在公共前缀，返回空字符串 ""。
 *
 *
 *
 * 示例 1：
 *
 * 输入：strs = ["flower","flow","flight"]
 * 输出："fl"
 * 示例 2：
 *
 * 输入：strs = ["dog","racecar","car"]
 * 输出：""
 * 解释：输入不存在公共前缀。
 *
 *
 * 提示：
 *
 * 1 <= strs.length <= 200
 * 0 <= strs[i].length <= 200
 * strs[i] 仅由小写英文字母组成
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/longest-common-prefix
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @Author hweiyu
 * @Description
 * @Date 2021/10/25 11:18
 */
public class P0014 {

    public static void main(String[] args) {
        System.out.println(new Solution14().longestCommonPrefix(new String[]{"flower", "flow", "flight"}));

        System.out.println(new Solution14().longestCommonPrefix(new String[]{"dog", "racecar", "car"}));
    }
}

class Solution14 {

    /**
     * 思路：定义两个指针，一个纵向走，一个横向走，然后遍历比对
     * @param strs
     * @return
     */
    public String longestCommonPrefix(String[] strs) {
        StringBuilder buf = new StringBuilder("");
        int len = strs[0].length();
        char c;
        boolean isWorng;
        for (int i = 0; i < len; i++) {
            isWorng = false;
            c = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if (i >= strs[j].length()) {
                    isWorng = true;
                    break;
                }
                if (c != strs[j].charAt(i)) {
                    isWorng = true;
                    break;
                }
            }
            if (isWorng) {
                break;
            }
            buf.append(c);
        }
        return buf.toString();
    }
}
